//
//  Laboratory.h
//  GPUProcessingTesting
//
//  Created by kadlubek47 on 12.07.2013.
//  Copyright (c) 2013 kadlubek47. All rights reserved.
//

#ifndef __GPUProcessingTesting__Laboratory__
#define __GPUProcessingTesting__Laboratory__

#include <string>
#include "TrialsSet.h"
#include "Experiment.h"

//FilterModule
#include "FMParamsInfo.h"
#include "FMTypes.h"
#include "IParameterizable.h"
//.

class Laboratory {
public:
    
    
    
    // Constructing
    Laboratory(const std::string resultsPath): resultsPath_(resultsPath) {}
    //.

    
    
    // Experiments
    void firstExperiment();
    //.
    
    
    
    //Struct in
    class structIn_filterModule_testFunction {
    public:
        structIn_filterModule_testFunction() {
            FMParamsDefVal::setDefault(params);
        }
        
        FMParameters params;
        
        unsigned int blockSize   = 512;
        std::string  inFileName  = std::string("testFile_mono.wav");
        std::string outFileName  = std::string("resultFile.wav");
    
    };
    //.

    
    
    // Test functions
    TrialsSet filterModule_testFunction( structIn_filterModule_testFunction& _in );
    //.
    
    
    
private:
    const std::string resultsPath_;
};


#endif /* defined(__GPUProcessingTesting__Laboratory__) */
